package com.qf.filters;

import com.qf.feign.CacheService;
import com.qf.utils.CheckPhone;
import com.qianfeng.smsplatform.common.constants.CacheConstants;
import com.qianfeng.smsplatform.common.constants.InterfaceExceptionDict;
import com.qianfeng.smsplatform.common.constants.StrategyConstants;
import com.qianfeng.smsplatform.common.model.Standard_Submit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

/*
 * @Data: 2021/7/20 21:10
 * */
@Component
public class PhaseFilter implements FiltersChain {

    private CacheService cacheService;
    @Autowired
    public void setCacheService(CacheService cacheService) {
        this.cacheService = cacheService;
    }

    @Override
    public boolean dealSms(Standard_Submit submit) {
//        获取当前的 手机号
        String destMobile = submit.getDestMobile();
//        获取前七位
        String substring = destMobile.substring(0, 7);
//        根据这7为从缓存中获取到省市的ID   这个是省ID & 市Id
        String procity = cacheService.get(CacheConstants.CACHE_PREFIX_PHASE + substring);
//
        System.out.println("procity"+procity);
        if(StringUtils.isEmpty(procity)){
//      说明这个手机号不在 记录中 不行
            submit.setReportState(2);
            submit.setErrorCode(InterfaceExceptionDict.RETURN_STATUS_PHASE_ERROR);
            submit.setDescription("当前手机号归属地未查到");
//TODO      理论上归属地未查到 不影响发送短信  可能是我们的数据库该 更新了
//            建议是对我们本身发起预警
//      发送状态报告  这个手机号很诡异  能通过我们的正则表达式  却不属于任何区域
        }else {
//            查到了对应的省市ID
//              切割出 省ID   市ID
            String[] split = procity.split("&");
            submit.setProductID(Integer.parseInt(split[0]));// 省ID
            submit.setCityId(Integer.parseInt(split[1]));// 市ID
//            设置运营商
            if(CheckPhone.isChinaMobilePhoneNum(destMobile)){
//                中国移动
                submit.setOperatorId(StrategyConstants.CHINA_MOBILE);
            }else if(CheckPhone.isChinaTelecomPhoneNum(destMobile)){
//                中国电信
                submit.setOperatorId(StrategyConstants.CHINA_TELCOM);
            }else if(CheckPhone.isChinaUnicomPhoneNum(destMobile)){
//                中国联动
                submit.setOperatorId(StrategyConstants.CHINA_UNICOM);
            }


//            int i=1/0;

            return true;
        }
//

        return false;
    }
}
